function backPropData = feedForward(pattern, weightsVector, solution)
    global LAYERS;
% FEEDFORWARD
%   Esta funcion realiza el paso feedforward a traves de todas las capas de
%   la red hasta obtener el valor de la salida a partir de un determinado
%   patron de entrada.
%   
%   Input:
%   pattern: Patron a actualizar
%   weightsVector: Vector con las matrices de pesos que caracterizan la red
%   solution: Salida deseada de la red
%
%   Output:
%   backPropData: Estructura con el delta de la neurona de salida y los
%   vectores de h de cada una de las capas de la red.
%

	nOfLayers = length(LAYERS);
    backPropData = cell(1,2);
    backPropData{1} = cell(1, nOfLayers);

	% PROPAGATE SIGNAL
    layerNeurons = pattern;
    for j = 1:nOfLayers
        hj = weightsVector{j}*vertcat(-1, layerNeurons);
        backPropData{1}{j} = hj;
        layerNeurons = g_function(hj,j);
    end
    backPropData{2} = gp_function(hj,nOfLayers).*(solution - layerNeurons);
    
end
